From 25644b7f51cedd669e7ac864746b78268be8d84d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 17 Jul 2015 10:05:17 -0700 Subject: [PATCH] Remove an unnecessary HashMap when Vec works Dependencies aren't necessarily unique per name as the same dependency can show up multiple times in various dependency kind lists, so it's not quite right to use a hash map anyway. --- src/cargo/core/resolver/mod.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index a72d7a534..7b04e93ae 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -182,7 +182,7 @@ fn activate(mut cx: Box, // Next, transform all dependencies into a list of possible candidates which // can satisfy that dependency. - let mut deps = try!(deps.into_iter().map(|(_dep_name, (dep, features))| { + let mut deps = try!(deps.into_iter().map(|(dep, features)| { let mut candidates = try!(registry.query(dep)); // When we attempt versions for a package, we'll want to start at the // maximum version and work our way down. @@ -430,8 +430,7 @@ fn compatible(a: &semver::Version, b: &semver::Version) -> bool { fn resolve_features<'a>(cx: &mut Context, parent: &'a Summary, method: Method) - -> CargoResult)>> { + -> CargoResult)>> { let dev_deps = match method { Method::Everything => true, Method::Required { dev_deps, .. } => dev_deps, @@ -452,7 +451,7 @@ fn resolve_features<'a>(cx: &mut Context, parent: &'a Summary, }); let (mut feature_deps, used_features) = try!(build_features(parent, method)); - let mut ret = HashMap::new(); + let mut ret = Vec::new(); // Next, sanitize all requested features by whitelisting all the requested // features that correspond to optional dependencies @@ -461,7 +460,7 @@ fn resolve_features<'a>(cx: &mut Context, parent: &'a Summary, if dep.is_optional() && !feature_deps.contains_key(dep.name()) { continue } - let mut base = feature_deps.remove(dep.name()).unwrap_or(vec![]); + let mut base = feature_deps.remove(dep.name()).unwrap_or(Vec::new()); for feature in dep.features().iter() { base.push(feature.clone()); if feature.contains("/") { @@ -471,7 +470,7 @@ fn resolve_features<'a>(cx: &mut Context, parent: &'a Summary, feature))); } } - ret.insert(dep.name(), (dep, base)); + ret.push((dep, base)); } // All features can only point to optional dependencies, in which case they -- 2.30.2